package com.niiwoo.activity.stage.service.prize;

import com.niiwoo.activity.stage.dto.request.prize.*;
import com.niiwoo.activity.stage.dto.response.prize.UserPrizeCountRespDTO;
import com.niiwoo.activity.stage.dto.response.prize.UserPrizeImportResponseDTO;
import com.niiwoo.activity.stage.dto.response.prize.UserPrizeResponseDTO;
import com.niiwoo.tripod.provider.dto.response.PageResponseDTO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description 运营活动manager红包信息接口
 * @Author zq
 * @Date 2017/11/22
 */
public interface UserPrizeDubboService {

    /**
     * 红包信息分页查询
     *
     * @param reqDTO
     * @return
     */
    PageResponseDTO<UserPrizeResponseDTO> getUserPrizeInfoPage(UserPrizeQueryReqDTO reqDTO);

    /**
     * 统计查询的红包总金额
     *
     * @param reqDTO
     * @return
     */
    UserPrizeCountRespDTO sumUserPrizeAmount(UserPrizeQueryReqDTO reqDTO);

    /**
     * 添加红包
     *
     * @param reqDTO
     * @return 返回添加的红包ID
     */
    Long addUserPrize(UserPrizeReqDTO reqDTO);

    /**
     * 导出红包信息
     *
     * @return
     */
    List<Map<String, Object>> exportExcelUserPrize(UserPrizeQueryReqDTO reqDTO);

    /**
     * 导入红包信息
     *
     * @param importReqDTO
     * @param rowNum
     * @param managerId
     * @param loginName
     */
    UserPrizeImportResponseDTO importExcel(UserPrizeImportReqDTO importReqDTO, int rowNum, Long managerId, String loginName);

    /**
     * 获取红包审核列表
     *
     * @param reqDTO
     * @return
     */
    PageResponseDTO<UserPrizeResponseDTO> getAuditListUserPrizeInfoPage(UserPrizeQueryReqDTO reqDTO);

    /**
     * 红包审核操作
     *
     * @param reqDTO
     * @return
     */
    int auditUserPrize(UserPrizeVerifyReqDTO reqDTO);

    /**
     * 获取红包撤回列表
     *
     * @param reqDTO
     * @return
     */
    PageResponseDTO<UserPrizeResponseDTO> getCancelListUserPrizeInfoPage(UserPrizeCancelQueryReqDTO reqDTO);

    /**
     * 撤回红包操作，可单个和多个
     *
     * @param reqDTO
     * @return
     */
    int cancelUserPrize(UserPrizeCancelReqDTO reqDTO);

//    int exportExcelCancelUserPrize();

    /*******************大批量数据导出***************/
    /**
     * 添加红包
     *
     * @param reqDTO
     * @return 返回红包总数
     */

    Long getPrizeTotalNum(UserPrizeExportExcelQueryReqDTO reqDTO);

    /**
     * 红包批量审核
     *
     * @param userPrizeBatchAuditReqDTO
     * @return
     */
    default void prizeBatchAudit(UserPrizeBatchAuditReqDTO userPrizeBatchAuditReqDTO){
        throw new UnsupportedOperationException("unimplemented");
    }
}

